int *p=a和int *p=&a的区别 | 您所在的位置:网站首页 › sartopore2和sartobran p的区别 › int *p=a和int *p=&a的区别 |
前言: 本文乃大一初学时写作,现在已经毕业两年多换方向了,成了前端码农,真正底层原理我现在也忘光光了,建议大家多看看多研究其他大佬的分析,别全听信本文。(也别因为这篇文章关注我了) 指针变量用来存放指针(或者可以理解成地址)。而 & 则是取地址运算符,因此给指针变量赋值的方式一般是把变量的地址取出来,然后付给对应类型的指针变量: int a; int* p = &a;上面的代码也可以写成: int a; int* p; p = &a;需要注意的是, int* 是指针变量的类型,而后面的 p 才是变量名,用来存储地址,因此地址 &a 是赋值给 p 而不是 *p 的。 所以,int *p中的 p 必须赋予一个地址,如果不是地址,编译器则会报错(实在不能理解的话就把地址当做一个新的类型,类型不同肯定会报错嘛 ╮( ̄▽ ̄)╭) 当然,如果 a 代表的是数组首地址,那就另说了。下面几个例子方便理解: int *p=a; #include int main() { int a = 123; int *p=a; printf("%d\n", p); return 0; }编译结果: 结果: 结果: |
CopyRight 2018-2019 实验室设备网 版权所有 |